package bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


/**
 * Classe que gerencia os jogos da rodada
 * @author Claudio Cardoso, Daniel Leite, Lucas Sampaio, Matheus Sampaio
 * @version 1.0
 */


public class Rodada implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private int identificador;
	private List<Jogo> jogos;
	
	//construtor
	public Rodada() {
		this.jogos = new ArrayList<Jogo>();
	}
	
	//metodos
	/**
	 * Retorna o identificador da Rodada
	 * @return
	 * 		Identificador da Rodada
	 */
	public int getIdentificador() {
		return identificador;
	}

	/**
	 * Modifica o Identificador da Rodada
	 * @param identificador
	 * 		Novo identificador da Rodada
	 */
	public void setIdentificador(int identificador) {
		this.identificador = identificador;
	}

	/**
	 * Retorna os Jogos da Rodada
	 * @return
	 * 		Jogos da Rodada
	 */
	public List<Jogo> getJogos() {
		return jogos;
	}
	
	/**
	 * Adiciona jogo a Rodada
	 * @param jogo
	 * 		Jogo adicionada a rodada
	 */
	public void adicionaJogo(Jogo jogo) {
		jogos.add(jogo);
		Collections.sort(jogos);
	}
	
	/**
	 * Retorna a quantidade de Jogos da Rodada
	 * @return
	 * 		Quantidade de jogos da Rodada
	 */
	public int size(){
		return jogos.size();
	}
	
	/**
	 * Retorna o Jogo no indice indicado
	 * @param i
	 * 		Indice indicado
	 * @return
	 * 		Jogo no indice indicado
	 */
	public Jogo get(int i){
		return jogos.get(i);
	}

	@Override
	/**
	 * Verifica a Igualdade entre duas rodadas
	 * @return
	 * 		True, se as Rodadas forem iguais. False, caso contrario
	 */
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		
		Rodada other = (Rodada) obj;
		if (getIdentificador() != other.getIdentificador())
			return false;
		return true;
	}
}